/* 
 * IMU_WT931.h - The C head file of the IMU(WT931) driver
 * NOTE: This file is based on C98 standard
 *
 * Copyright (c) 2020-, FOSH Project
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author            Notes           mail
 * 2020-03-29     周森       first version   
 * 2021-03-17     江榕煜     add annotation     2373180028@qq.com
 * 							 并重构命名
**/
#ifndef IMU_DEVICE_H
#define IMU_DEVICE_H

#include "string.h"
#include "stdint.h"

#define IMU_RX_BUF_NUM 22u   
#define IMU_FRAME_LENGTH 11u 

/**
 * @brief   IMU时间数据类型
 * @note    前导码 0x55 0x50
 */
typedef struct
{
	uint8_t ucYear;		// 年
	uint8_t ucMonth;		// 月
	uint8_t ucDay;		// 日
	uint8_t ucHour;		// 时
	uint8_t ucMinute;		// 分
	uint8_t ucSecond;		// 秒	
	uint16_t usMiliSecond;//毫秒
}WT931_Time;  

/**
 * @brief   IMU加速度计类型
 * @note    前导码 0X55 0X51
**/
typedef struct
{
	int16_t a[3];      //-32768~0~32768  --映射至-->  -16g~0~16g g=9.8m/s2
	int16_t T;
}WT931_Accelerate;

/**
 * @brief   IMU陀螺仪数据类型
 * @note    前导码 0X55 0X52
**/
typedef struct
{
	int16_t w[3];      //-32768~0~32768  --映射至-->  -2000~0~2000(°/s)
	int16_t T;
}WT931_Gyro;

/**
 * @brief   IMU角度数据类型
 * @note    前导码 0x55 0x53
**/
typedef struct
{
	int16_t Angle[3];  //-32768~0~32768  --映射至-->  -180~0~180
	int16_t T;
}WT931_Angle;

/**
 * @brief   WT931九轴IMU数据
 * @note    解析后的数据区
**/
typedef struct
{
	WT931_Time			Time;	// 时间
	WT931_Accelerate 	Accelerate;		// 加速度
	WT931_Gyro   		Gyro;	// 陀螺仪
	WT931_Angle 		Angle;	// 角度计
}WT931_9AxisData;

/**
 * @brief   WT931原数据解析
 * @note    该函数是IMU原数据转用户格式的转码接口
 * @param
 *          imu_info_t(WT931_9AxisData *)	解析出的数据存放目标对象
* 			srcData(uint8_t *)				原数据
 * @retval
 *          None
**/
void WT931_9AxisDataAnalys(WT931_9AxisData *imu_info_t, uint8_t * srcData);

#endif

